<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../vue.js"></script>
  </head>

  <body>
    <div id="app">
      <!-- 3.组件的使用 -->
      <App />
    </div>
    <script>
      Vue.config.productionTip = false;

      //1.在Vue中使用Vue.extend({})创建组件，extend方法接收一个配置对象（和newVue接收的配置对象类似）
      const App = Vue.extend({
        /* 
          组件的配置都是独立的,和vm的配置类似(没有el,因为所有组件最后是App的后代组件,App最终会放在vm实例上被渲染在vm的模板中,el的模板最后会在el容器中渲染)
        */
        template: `
          <div>
            <h1>App组件{{count}}</h1> 
            <button @click="changeCount">累加</button>
          </div>
        `,
        data() {
          return {
            count: 0,
          };
        },
        methods: {
          changeCount() {
            this.count++;
          },
        },
      });

      const vm = new Vue({
        el: "#app",
        data() {
          return {};
        },
        //2.注册组件(注册完成以后,就能在当前的实例的模板中使用这个组件了)
        components: {
          App,
        },
      });
    </script>
  </body>
</html>
